Alles was die drawGLScene() Funktion machen muss, ist zu bestimmen, welche doMesh-Funktion aufgerufen werden muss:

bool DrawGLScene(GLvoid)							// Hier kommt der ganze Zeichnen-Kram hin
{
	if (bumps) {
		if (useMultitexture && maxTexelUnits>1)
			return doMesh2TexelUnits();
		else return doMesh1TexelUnits();	}
	else return doMeshNoBumps();
}


Killt das GLWindow, nicht geändert (deshalb übersprungen):

GLvoid KillGLWindow(GLvoid)							// entferne das Fenster korrekt
>…<

Erzeugt das GLWindow, nicht geändert (deshalb übersprungen):

BOOL CreateGLWindow(char* title, int width, int height, int bits, bool fullscreenflag)
>…<

Windows Hauptschleife, nicht geändert (deshalb übersprungen):

LRESULT CALLBACK WndProc(	HWND hWnd,					// Handle für dieses Fenster
				UINT uMsg,					// Nachricht für dieses Fenster
				WPARAM wParam,					// zusätzliche Nachrichten Informationen
				LPARAM lParam)					// zusätzliche Nachrichten Informationen
>…<

Der Windows Main-Funktion wurden einige Tasten hinzugefügt:

int WINAPI WinMain(	HINSTANCE hInstance,					// Instanz
			HINSTANCE hPrevInstance,				// vorherige Instanz
			LPSTR lpCmdLine,					// Kommandozeilen Parameter
			int nCmdShow)						// Fenster Anzeige Status
{

	>…<

				if (keys['E'])
				{
					keys['E']=false;
					emboss=!emboss;
				}

				if (keys['M'])
				{
					keys['M']=false;
					useMultitexture=((!useMultitexture) && multitextureSupported);
				}

				if (keys['B'])
				{
					keys['B']=false;
					bumps=!bumps;
				}

				if (keys['F'])
				{
					keys['F']=false;
					filter++;
					filter%=3;
				}

				if (keys[VK_PRIOR])
				{
					z-=0.02f;
				}

				if (keys[VK_NEXT])
				{
					z+=0.02f;
				}

				if (keys[VK_UP])
				{
					xspeed-=0.01f;
				}

				if (keys[VK_DOWN])
				{
					xspeed+=0.01f;
				}

				if (keys[VK_RIGHT])
				{
					yspeed+=0.01f;
				}

				if (keys[VK_LEFT])
				{
					yspeed-=0.01f;
				}
			}
		}
	}
	// Shutdown
	KillGLWindow();								// Kille das Fenster
	return (msg.wParam);							// beende das Programm
}

Nun, da Sie dieses Tutorial geschafft haben, ein paar Worte über Textur-Erzeugung und bumpmapped Objekte, bevor Sie anfangen, mächtige Spiele zu programmieren und sich dann darüber wundern, warum bumpmapping nicht so schnell ist oder nicht so gut aussieht: Nun sollten Sie zumindest ein grundlegendes Verständnis des hier vorgestellten Themas haben. Ich hoffe, Sie haben es genossen, es zu lesen.

Wenn Sie Fragen und / oder Vorschläge bezüglich dieser Lektion haben, können Sie mich anmailen oder meine Webseite unter http://www.glhint.de besuchen.

Dank geht an: